Pooling Problem
go
Couenne
GAMS
short
0),
sum(comp$(ubq(comp, pool) > 0),
cprice(comp)*y(pool,pro)*q(comp,pool)))
- pprice(pro)*sum(pool$(uby(pool,pro) > 0),
y(pool, pro))
+ sum(comp$(ubz(comp,pro)>0),
(cprice(comp)-pprice(pro))*z(comp, pro))
);
clower(comp).. sum(pool$(ubq(comp,pool)>0),
sum(pro$(uby(pool,pro)>0),
q(comp,pool)*y(pool, pro)))
+ sum(pro$(ubz(comp,pro)>0), z(comp, pro))
=g= cl(comp);
cupper(comp).. sum(pool$(ubq(comp,pool)>0),
sum(pro$(uby(pool,pro)>0),
q(comp,pool)*y(pool, pro)))
+ sum(pro$(ubz(comp,pro)>0), z(comp, pro))
=l= cu(comp);
pszrlt(comp,pool)$(ubq(comp,pool)>0)..
sum(pro$(uby(pool,pro)>0), q(comp,pool)*y(pool,pro))
=l= q(comp,pool)*psize(pool);
plower(pro).. sum(pool$(uby(pool,pro)>0), y(pool,pro))
+ sum(comp$(ubz(comp, pro)>0), z(comp, pro)) =g= prl(pro);
pupper(pro).. sum(pool$(uby(pool,pro)>0), y(pool,pro))
+ sum(comp$(ubz(comp, pro)>0), z(comp, pro)) =l= pru(pro);
pqlower(pro, qual).. sum(pool$(uby(pool,pro)>0),
sum(comp$(ubq(comp,pool)>0),
cqual(comp, qual)*q(comp,pool)*y(pool,pro)))
+ sum(comp$(ubz(comp, pro)>0),
cqual(comp, qual)*z(comp, pro)) =g=
sum(pool$(uby(pool,pro)>0),
pqlbd(pro, qual)*y(pool,pro))
+ sum(comp$(ubz(comp, pro)>0),
pqlbd(pro, qual)*z(comp, pro));
pqupper(pro, qual).. sum(pool$(uby(pool,pro)>0),
sum(comp$(ubq(comp,pool)>0),
cqual(comp, qual)*q(comp,pool)*y(pool,pro)))
+ sum(comp$(ubz(comp, pro)>0),
cqual(comp, qual)*z(comp, pro)) =l=
sum(pool$(uby(pool,pro)>0),
pqubd(pro, qual)*y(pool,pro))
+ sum(comp$(ubz(comp, pro)>0),
pqubd(pro, qual)*z(comp, pro));
fraction(pool).. sum(comp$(ubq(comp,pool)>0), q(comp, pool)) =e= 1;
extensions(pool, pro)$(uby(pool,pro)>0)..
sum(comp$(ubq(comp,pool)>0), q(comp, pool)*y(pool, pro)) =e=
y(pool, pro);
model poolprob /all/;
solve poolprob minimizing cost using nlp;
]]>